超龄 文科 0背景 奶爸,转码上岸之路!
欢迎大家点击左下角“阅读原文”到原帖与作者交流讨论哦!
先说下自己的背景吧,今年不惑了,2007年国内本科毕业,拿的是艺术学学士学位。
毕业之后就一直做景观设计师,2012年到UGA读了Master of Landscape Architecture,毕业之后留美工作继续做Landscape Architect。一路做到2020年,一边继续full time landscape的工作一边在ASU读CS的master,2021年底还没毕业的时候拿到了两个offer,2022年5月正式毕业,现在在General Motors做Software Developer。
从决定转码到进入ASU读书再到成功上岸大概总共花了三年的时间,基本上都是靠自己摸索着走下来,期间也经历了很多人生的变故和各种各样的困难,现在回头看看感觉这三年真的是很珍贵的一段人生经历,所以想写点东西,一方面是给自己留的纪念,一方面希望能给到像我一样两眼一抹黑而又想改变自己人生轨迹的人们一些帮助。
在这里我会按照时间线分享我的转码经验,同时也会分享一些我觉得好的书籍和资源,但比起这些我觉得对于像我这样大龄0基础转码的人来说,最重要的还是自己坚定的信念和坚持下去的恒心,人生真的不容易,捷径会有,但归根结底还是要靠自己坚定的往前走,只要心中有目标并保持向前,就算爬也能爬到目的地,只是时间问题而已。
1. 决定转码
其实转码的念头从2018年前后就一直在自己脑子里转来转去,只不过一直都没有付诸实践,一直到2019年的时候才开始去edx上了一个python的基础课:GT的Introduction of Computing in Python。直到现在我都还很喜欢这个课程,概念讲解清晰,作业主题和考试难度都很适中,完全不会劝退我这种0基础的人,反而会觉得上课和做作业的时候很有乐趣。
上这门课的目的更多是试水,看看自己到底能不能做coding的工作,同时2019年初的时候我老婆也成功怀上了我们的第一个宝贝女儿,所以当时感觉全身充满了能量,开始做一些具体的转码计划。
大概的路线就是读书->刷题->做简历->准备面试->上岸。
2. 读书
第一个问题就是读bootcamp还是去读一个master,我只能说各有利弊,选择适合自己的就好。
我因为是0基础再加上还有H1B在身,当时只能做landscape相关的工作,所以选择了去读一个master。因为要养家糊口没办法full time做学生,所以选择读一个online的master,时间灵活,费用也不是很贵。
现在美国online的CS项目很多,录取的门槛也不是特别高,而且毕业后你拿到的master和on campus的也没区别,一样找工作。我当时选择的是ASU的online master of computer science,因为ASU明确说了只要完成了Calculus I & II,并且成功通过四门cs基础课的考试就可以录取,对于我这种完全没有相关背景的学生来说录取把握比较大。于是我就找了我们当地的一个社区大学上了Calculus I & II,学费总共700多刀,拿了两个A,同时又在网上上了ASU的那四门CS基础课,一门课只要59刀,通过了四个课的考试。
这整个过程大概一年,2020年8月正式被ASU录取开始了master的课程。在ASU读书的最大感受就是需要补的太多了,因为是graduate的program,所以很多基础都不会讲,做作业的时候要花大量的时间去自己学一些基础的知识和语言。而且ASU的课程难度和老师水平相差非常大,有的课很好,有的课烂出天际而且考试还巨难。
总之ASU的这个项目适合要么有一定基础,要么自己比较努力的人去读,只要足够努力而且心态能够保持健康,一般两年都能读下来拿到master去找工作,而且找工作时候的口碑还不错。如果很有天赋或者自己下狠心往死里卷的话一年毕业也不是没有可能。。。
对于我来说只是想拿个学位找工作,没指望在学校里学到啥实际有用的,所以课程lecture我基本都不看,直接读老师给的ppt和材料,只为了应付作业和考试,然后空出更多的时间准备面试和刷题,所以ASU对于我来说还是挺适合的。
3. 刷题投简历面试
先说刷题吧,对于我来说最难的两部分就是入门和找到自己的套路。
刚开始刷的时候什么都不知道乱刷,效率极其低下,也看了不少网上的资料和书,但是都是东一榔头西一棒槌,完全找不到方向。
后来看了图解算法那本书,算是入了门,然后跟着labuladong的算法小抄还有neetcode大佬的刷题list一路刷了下来,慢慢找到了自己的套路。
在这里还想推荐一下edx的Harvard的免费课CS50,老师超级有激情,一路跟着上下来感觉自己对coding有了新的认识。这门课lecture看起来非常爽,但是课后作业的难度指数级增长,不过只要认真思考加上一定量的google都能做出来,而且做出来之后超级有成就感,强推!
总结下来刷题其实也没什么捷径,最大的捷径就是自己总结出适合自己的做题套路,遇到题目至少能有思路,和面试官聊的时候即使做不出来也不慌,把明明不会做的题变成和面试官之间对于找到最优解的讨论就好。
关于简历大家担心的最多的应该是project不够,不够亮眼。我第一版的简历上的projects基本都是ASU课程做的projects,很普通。
后来跟着Udacity做了一些java backend的project,java和springboot的project是跟着freecodecamp的视频做的, 最得意的一个project是northeastern的CS5610/CS4550,整个project包含了前端后端还加了ML。
最后我的简历上总共有5个projects都很有分量。可能大家会觉得没时间做project,但实际上如果潜下心来做一个project大概平均20小时不到,每晚花两小时十天就做完了,最重要的是不要拖延,不要拖延,不要拖延。。。在这里再推荐一个Udemy上的课,The Complete 2022 Web Development Bootcamp, 对新手非常友好的超级入门课,跟着上下来很有成就感,而且前端后端数据库都有涉及到。
关于面试说实话我没有特别准备,因为从2007年算起到现在我也算是中美职场浸淫了十好几年了。。。所谓的BQ和landscape工作中的各种扯皮比起来简直就是天使问题, 十几年的contractor,developer和government的历练给了我无数现成的各种examples,每次面试的时候都不带重样的。而且每次面试官最感兴趣的问题都是为什么我这么大岁数了竟然还想从landsacpe转成software engineer,而且我是怎样一边工作一边读书一边带娃还能来面试的。。。我的面试窍门就是把面试都当成是一次和客户的meeting,首先知道对方要什么,然后有针对性的给他想要的,同时把握好聊天的节奏,适当的穿插些轻松的玩笑,最后大家皆大欢喜。。。我进入最终面试的公司总共就两家,最后这两家都给了offer。
4. 三年
最后我想说说时间管理的问题,怎么有效的规划和利用时间。
不过在这之前,我想先说说我这三年是怎么过的,这部分更像是写给自己看的,算是情绪的抒发也好,对自己的纪念也罢。因为这三年对于我来说不只是工作读书刷题面试,还经历了我人生里到目前为止最深刻的痛。
2019年我和我老婆都很开心,因为我们的第一个宝贝女儿即将在9月出生,我们做好了一切的准备迎接她的到来,可是就在9月8号,距离出生不过两天的时候,宝宝突然没有了心跳。后来医生说是因为脐带绕了左腿三周,宝宝走了。得知消息的那一刻我真的感觉到了那种锥心的痛,但是我不能倒,因为医生说我老婆还是要正常的把她生下来,即使明知宝宝已经没有了心跳。
我必须要安慰和支持我的老婆,用尽我所有的力气和办法去让她平安度过这段日子。那段日子真的很难熬,照顾老婆的饮食起居和身体恢复,伺候月子,不停的想办法开解和安慰老婆,那个时候还没有covid,我的calculus还是要每周三天晚上去campus上的,因为miss了一节课老师还单独找我谈话表达了不满。
再加上那时刚好换工作,还有h1b transfer的问题,每天都是焦头烂额。经常自己开车去超市的路上不知不觉发现一脸泪水,但是一回到家还是做出平静的样子逗老婆开心。所谓的痛苦面具应该就是心里明明痛的都要死了,可是没人能说,表面上还要一脸无所谓,因为还有需要依靠你的人,你必须坚强。
就这样我和老婆互相支持着到了2020,我拿到了ASU的录取通知书,我们的第二个宝贝女儿也在2020年的12月到来了。这之间我们经历了很多,也成长了很多,现在回想起来我真的很感激那段岁月,也很感谢我老婆还有我们的两个宝贝女儿。
好了说远了,现在回到时间管理的问题,我经常听到我的同学或者朋友说时间不够,转码太难。其实仔细想想一天的时间其实是足够的,只不过很多人会拖延,会懒。
拿我举例吧,刚进ASU读书的时候我有一份full time的工作,每天至少8小时,再加上学校的课程和作业,还有一个刚刚出生的宝宝和坐月子的老婆,当时有covid所以一切都要靠我们自己。这种夸张的情况反而会逼着你不去拖延,而且要认认真真做好计划并坚决执行,因为一旦miss了一个会对之后的其他事情造成影响。
我大概说一下我每天的时间安排给大家做个参考吧,每天早上起来就是宝宝吃早饭换尿布还有洗漱之类的琐事,然后就是8小时上班,这中间还要掺杂着宝宝的吃饭,玩耍换尿布等各种琐事,所以有时候也会稍微加点班处理好工作上的事情。
基本上一直到晚上八点宝宝睡觉前都是没有什么时间去学习和刷题的,幸运的是我们的宝宝睡觉很好,所以一般晚上八点到十二点或者凌晨一点这段时间我可以集中精力学习,然后争取十二点睡到早上七点的七小时睡眠。
晚上这四到五小时的学习我基本分为两部分,两到三小时刷题(因为题目不同时间不定,但基本控制在三小时内) + 两小时project或者学校功课。最重要的还是坚持,还有保持平静的心态,很多人容易慌,觉得来不及,其实仔细算算每个工作日保证四小时全心投入学习,加上周末两天能够保证每天8小时的学习,那加起来就是36小时,和full time的工作时间也就相差4小时,这样坚持下来不可能没有效果,所以不需要心急,慢慢来,比较快。
5. 结语
这是我第一次在地里发帖,短短的一篇文字也没办法把我所有转码过程中的一些资源还有自己的一些小窍门说清楚,包括面经,如果之后有时间我也会继续补充这个帖子,把自己的一些心得慢慢分享出来。
其实写这篇东西的目的更多的是想给自己看,作为一种慰藉也好,或者对自己的纪念和鞭策也好,走过了这一切之后总觉得应该留点东西下来。我现在也还在继续刷题,因为还想着有一段相关工作经验之后再跳更好的科技大厂,给老婆和女儿更加无忧无虑的生活。
最后想说,生活真的不易,人,一定要坚强。。。
尽量回复了大家的问题,感觉更多是关于做project的方法,我在一些回复中有提到,想想还是放在这里在集中说一下。
首先我想大家应该先明确做project的目的,对于我来说做project纯粹是为了简历和面试,不是为了系统学习某个语言或者framework。
所以我在选择project的时候没有从udemy或者udacity这种边一步步build基础知识结构边一步步做project的课程入手,相反的我是先去youtube上看freecodecamp的视频,我之前说过freecodecamp有很多8到15小时的crash视频,高度集中在application本身,比如我跟着做两个这样的project,我即使不明白背后的很多基础知识,但我很清楚的知道做这样的一个project我需要怎么什么样的架构,我怎么去写一些基本的功能,就好比搭乐高,很清楚一个东西由哪些部分组成,这些部分怎么拼,最终会得到什么样的一个结果,但是具体每个零部件负责啥,每个凹凸怎么拼到一起的就不用在意了。这样可以节省大量的时间,同时也会迅速了解自己对什么样的知识有不足,想要多了解的部分就直接google,没必要再去上课了。
这样做了几个project下来再去udemy或者udacity上课跟着做project就会快很多,因为会发现很多东西自己已经很熟悉了,如果遇到不熟悉的就把课程里相关的部分仔细看看就好,没必要过所有的视频,可以节省出大量的时间。
我觉得大家之所以觉得做project费时间是因为每开一个新project的课程或者视频大家都想着从头到尾仔仔细细的做完做好,中间有一点不明白马上就停了仔细研究,结果时间拖长了就觉得进度好慢,很容易最终会导致放弃。我觉得做project一气呵成很重要,要学会快进,我经常在看视频的时候10秒10秒的快进,或者1.5倍速看,这种方法对我来说可以大幅提高自己的集中力,因为miss了一点就跟不上了。我的习惯是看视频的同时敲代码,一开始会很辛苦,但是习惯了之后效率高很多,而且很容易形成肌肉记忆,因为如果敲的慢就跟不上视频了。。。大家也可以看一段视频然后敲一段代码,总之选择适合自己的就好。
最后再强调一下在做事情之前想清楚自己的目的很重要,然后再想清楚要达到目的需要做些啥,可以舍弃些啥,这样在后续具体操作的时候你会发现可以节省大量的时间和精力,同时又会很容易有成就感。还有很感激大家的鼓励和祝福,我相信没有人的生活是轻松愉快的,每个人每天都有自己的烦心事和难关,希望大家都能勇敢从容的面对自己的人生,做出最适合自己的选择并达到理想的目标!
有不少人问我为什么从landscape转software,今天就稍微详细说说吧,这个问题面试官也是屡问不爽。答案有两个版本,第一个版本是给面试官听的版本,第二个版本是我自己转行的真正原因。
面试官版本:
面试的时候被问到这种问题的时候切记一定不要说自己以前的行业不好,相反要表现出你非常热爱以前的行业。一般我会先和面试官说我做landscape十几年了,如果不热爱是不可能坚持这么久的,我很喜欢我在做的事情,这个行业也带给了我很多很好的东西,支持着我和我家庭的生活。接下来我会向面试官简单说下我在landscape做到的程度,为后面将要出现的“但是”做铺垫。
我在这个行业已经拿了license,也做过了各种各样的项目,加入了最前沿的一些组织,也参与了自己公司的management和一些行业policy制订的讨论会,在某种程度上来说已经可以算是kind of top of the line了。
但现在的问题是我还很年轻,未来还有很长的人生,而我又是个非常喜欢challenge自己的人,如果一个行业没办法一直给我新的东西去学去挑战的话,我会觉得我自身的资源被浪费了。
话说到这里,原因已经呼之欲出了,但是在总结前还要和面试官再强调一下我即使在landscape这个行业也是努力challenge过自己的。比如我试过介绍一些新的软件给公司啊,也试过用python写一些简单的批处理帮助landscape的一些permit项目啊,并且把这些新东西全都整理好了详细的文档让公司里的人都可以参考,可是还是几乎没人用,因为行业本身比较old school,大家不愿意去改变。
所以我需要找个一个新的方向来不断的给自己挑战并让自己能不停学到新东西。接着就可以一通侃CS多么有挑战性啊,多么吸引我啊之类的。这样一套下来可以体现出你不是脑袋一热做的决定,也是个不轻易放弃会去努力的人,同时意识到努力没有好结果的时候又是可以马上做出决断很有行动力的一个人。这种答案会比较出彩也会容易让面试官有那种碰到牛人的错觉。。。
自己的版本:
活少,钱多,在家干活。
大家如果还有相关的问题和看法,欢迎点击“阅读原文”到一亩三分地讨论
大家还爱看
生活|投资|职场|留学
与百万华人一同关注我们4个公众号!
别错过北美最新热点和干货!
商业合作:1point3acres.com/contact
百万级月活,品牌精准投放